package org.atovio.structure.tree;

/**
 * 二叉链表结点类
 *
 * @author AtoVio, Winter Yuan
 * @version 1.0
 */
public class BinaryNode<T> {

    // 数据域
    private final T data;
    // 地址域，指向左孩子结点
    public BinaryNode<T> left;
    // 地址域，指向右孩子结点
    public BinaryNode<T> right;

    /**
     * 构造方法
     *
     * @param data  数据
     * @param left  左孩子
     * @param right 右孩子
     */
    public BinaryNode(T data, BinaryNode<T> left, BinaryNode<T> right) {
        this.data = data;
        this.left = left;
        this.right = right;
    }

    /**
     * 构造方法
     *
     * @param data 数据
     */
    public BinaryNode(T data) {
        this.data = data;
    }

    @Override
    public String toString() {
        return this.data.toString();
    }

    /**
     * 判断是否为叶子结点
     *
     * @return true表示是叶子结点，false则表示不是叶子结点
     */
    public boolean isLeaf() {
        return this.left == null && this.right == null;
    }
}